udpfandomcom_uk-20200213-history
Довідка:Парсерні функції
У квітні 2006 року у всіх проектах фонду «Вікімедіа» встановлено розширення [[m:ParserFunctions|'ParserFunctions']], написане Тімом Старлінгом. Цей модуль містить набір функцій парсера. Загальний синтаксис цих функцій такий: : Функції #expr: Функція expr виконує математичні обчислення над числами або змінними/параметрами, що приводяться до чисел.. Синтаксис: Підтримуються наступні оператори (перелічені в порядку, приблизно відповідному їх пріоритету): Як завжди, краще поставити зайві дужки, чим сушити голову над порядком обчислення На виведенні логічних змінних 0 означає брехню, а 1 — істину. Наприклад: видає: Виконано перетворення 100° за Фаренгейтом в градуси за Цельсієм з округленням до найближчого цілого числа. #if: Функція if ( ) служить для створення конструкцій вигляду if-then-else. Її синтаксис такий: Якщо умова — порожній рядок або складається тільки з пропусків, вважається, що умова не виконана, і повертається текст, якщо умова помилкова; якщо задана умова істинна, то при його виконанні повертається текст, якщо умова істинна. Останній параметр може бути опущений — в цьому випадку за помилкової умови буде повернений порожній рядок. Зверніть увагу, що if не підтримує порівняння за допомогою «=» і інших математичних операцій. Так, поверне «так», оскільки рядок «1 = 2» не порожній. Для порівняння рядків використовуйте ifeq. Для порівняння чисел використовуйте ifexpr. #ifeq: Функція ifeq порівнює два рядки, повертаючи ще один рядок залежно від результату порівняння. Її синтаксис такий: #ifexist: Функція ifexist схожа за синтаксисом на if, тільки замість умови перевіряється існування сторінки з вказаним заголовком. Перевірка виконується з урахуванням регістру після приведення заголовка, що перевіряється, до канонічного вигляду (якщо на початку стоїть мала буква, то вона перетвориться на велику). Наприклад: : поверне , оскільки сторінка Довідка:Зміст існує. : поверне , оскільки довідка:зміст при приведенні до канонічної форми дасть Довідка:Зміст. : поверне , оскільки сторінка Довідка:Довідка не існує. не працює з відносними шляхами типу /підсторінка. #ifexpr: ifexpr обчислює математичний вираз і повертає один з двох рядків залежно від результату. Якщо результат обчислень рівний нулю — повертається другий текст, інакше — перший. Математичний синтаксис такий же, як у expr. #switch: switch порівнює одне значення з багатьма, повертаючи результат якщо знайдений збіг. #switch може використовуватися замість #ifeq: : дає : дає #time: #time — функція форматує час і дату. Синтаксис: : или : Якщо час не заданий, то використовується поточний. Через кешування можлива відмінність між реальним часом і відображеним. Для ручного оновлення збережіть сторінку, не роблячи ніяких змін, або очістіть кеш сторінки. Аргумент ''format подібний до використовуваного у функції PHP date Розширення PHP синтаксису: Всі інші символи будуть виведені без змін. * Фраза в подвійних лапках буде виведена без змін і лапок. Незакриті лапки вважатимуться символами. ** → Сьогодні вівторок ** → 20’11" * Похилена вліво риска працює так само як і з PHP date(). \H виводить H, \" виводить ". Формат параметра time ідентичний використовуваному в PHP strtotime(). Це можуть бути абсолютні і відносні дати, наприклад «11 грудня» і/або «+10 hours», що може використовуватися для перекладу часових зон. * → (14 днів назад) * → (UTC+4) * → #rel2abs: Функція #rel2abs перетворить відносний шлях посилання в абсолютний. Під відносним шляхом приймається такий, який починається з символів '/', './' або '../', а також просто '..' або '.'. Приклад: * Якщо знаходитися на стор. Help:Foo/bar і викликати , результатом повинно стати Help:Foo/baz * Якщо знаходитися на стор. Help:Foo і викликати , результатом повинно стати baz * Якщо знаходитися на стор. Help:Foo і викликати , результатом повинно стати Error: Invalid depth in path: «Help:Foo/../../baz» (tried to access a node above the root node)" Щоб не перевіряти, чи існує шуканий шлях, можна іспользоват цю функцію в комбінації з #ifexist: : | '..' exist | '..' does not exist}} Якщо шлях, передаваний на вхід функції як параметр, не ідентифікований як відносний шлях, функція його поверне як результат. Наприклад: : повертає 'Help:Help' #titleparts: Функція #titleparts повертає підрядок до потрібного слеша. Основною метою є можливість отримання сторінок всіх рівнів, для яких дана є підсторінкою. У разі, коли параметр bits рівний нулю, більше кількості рівнів статті або його неможливо перетворити в число, повертається title Приклад: * поверне результат результат Стаття * поверне результат результат Стаття/foo * Якщо знаходитися на стор. Користувач:Foo/bar і викликати |1}}, результатом повинно стати Користувач:Foo. * Якщо знаходитися на стор. Користувач:Foo/bar і викликати |1}}, результатом повинно стати Foo. #iferror: Повертає при помилці якщо вираз містить згенеровану #expr, #ifexpr, #time, #rel2abs, чи якимись іншими ситуаціями MediaWiki (наприклад, рекурсією або нескінченними циклами). Буває корисним для перехоплення неправильного вводу в парсерних функціях. Наприклад: * |невірний ввід|правильний вираз}} видає |невірний ввід|правильний вираз}} * |невірний ввід|правильний вираз}} видає |невірний ввід|правильний вираз}} Останні два параметрами не є обов'язковими. Якщо параметр якщо правильно опущено, то видається вираз. Якщо параметр при помилці теж опущений, при помилці нічого не виводиться, а при правильному виразі повертається вираз. * |невірний ввід}} видає |невірний ввід}} * |невірний ввід}} видає |невірний ввід}} * }} видає }} * }} видає }} Тому: * означає відображення вікітексту при коректному вводі, інакше відображення альтернативи. * означає відображення вікітексту при коректному вводі". Встановлення Заладуйте усі п'ять вказаних нижче файлiв і встановіть їх в нову директорію ParserFunctions в директорії розширень MediaWiki. * Expr.php * ParserFunctions.php * ParserFunctions.i18n.php * ParserFunctions.i18n.magic.php * SprintfDateCompat.php Потім додайте в кінець файлу LocalSettings.php рядок require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php" ); Дерево коду можна подивитися тут: * ParserFunctions in MediaWiki SVN Посилання *m:Help:ParserFunctions *Довідка:ParserFunctions * Обговорення Parserfunctions в архіві списку розсилки Wikitech-l * Розширення Parserfunctions введене в експлуатацію de:Hilfe:Vorlagenprogrammierung en:Help:Calculation fr:Aide:Fonctions parseur hsb:Pomoc:Předłohowe programowanje it:Aiuto:Funzioni parser ja:ヘルプ:条件文 ko:위키백과:특수 함수 nl:Help:Parserfuncties pl:Pomoc:Funkcje parsera ru:Википедия:Функции парсера sl:Pomoč:ParserFunctions vi:Trợ giúp:Tính toán zh:Help:解析器函数